Clearing the R workspace

Loading required packages
Importing and cleaning the dataset
setwd("/Users/sofiatorneri/Downloads")
data_pwt <- fread("pwt_database.csv")
data_wdi <- fread("wdi_database.csv")
data_gini <- fread("gini.csv", sep=";")

Padronizando as colunas de país e ano

setnames(data_pwt, "iso", "Country")
setnames(data_pwt, "year", "year")

setnames(data_wdi, "iso", "Country")
setnames(data_wdi, "year", "year")

setnames(data_gini, "country", "Country")

Transformando data_gini para formato longo e removendo o prefixo “Ano” e convertendo ‘year’ para numérico

data_gini_long <- melt(data_gini, id.vars = "Country", 
                       variable.name = "year", 
                       value.name = "GINI")

data_gini_long[, year := as.numeric(gsub("Ano ", "", year))]
Converting the data to ‘data.table’ format for better performance.
data_pwt <- as.data.table(data_pwt)
data_wdi <- as.data.table(data_wdi)
data_gini_long <- as.data.table(data_gini_long)

Renaming columns based on the provided table

setnames(data_wdi, old = c("EN.BIR.THRD.NO", "EN.FSH.THRD.NO", "EN.HPT.THRD.NO", "EN.MAM.THRD.NO", "AG.LND.FRST.ZS", "EN.ATM.CO2E.KT", "NY.GDP.PCAP.KD", "ER.PTD.TOTL.ZS"),
         new = c("Bird", "Fish", "Plant", "Mammal", "Forest_perc", "CO2", "GDP", "Land_n_Marine"))
setnames(data_pwt, old = "hdi", new = "Idh")

Handle NaN values in ‘Land_n_Marine’, ‘Bird’, ‘Fish’, ‘Plant’, and ‘Mammal’ columns

Preenchendo valores ausentes com a média por país, e em seguida com a média global se necessário

for (var in c("Land_n_Marine", "Bird", "Fish", "Plant", "Mammal")) {
  # Preencher valores ausentes com a média por país
  data_wdi[, paste0(var, "_mean_country") := mean(get(var), na.rm = TRUE), by = Country]
  data_wdi[is.na(get(var)), (var) := get(paste0(var, "_mean_country"))]
  
  # Preencher valores ausentes restantes com a média global
  global_mean <- mean(data_wdi[[var]], na.rm = TRUE)
  data_wdi[is.na(get(var)), (var) := global_mean]
  
  # Remover as colunas auxiliares de média
  data_wdi[, paste0(var, "_mean_country") := NULL]
}

Converter os nomes dos países em data_gini_long para códigos ISO

data_gini_long$Country <- countrycode(data_gini_long$Country, origin = "country.name", destination = "iso3c")

Mesclando bases de dados

base_total <- merge(data_wdi, data_pwt, by = c("Country", "year"), all = TRUE, allow.cartesian = TRUE)
base_total <- merge(base_total, data_gini_long, by = c("Country", "year"), all.x = TRUE, allow.cartesian = TRUE)

Garantindo que ‘year’ seja numérico e Ordenando a base por país e ano para garantir o cálculo correto

base_total[, year := as.numeric(year)]

base_total <- base_total[order(Country, year)]

Calculando o crescimento do PIB para cada país e ano consecutivo

base_total[, g_GDP := log(GDP) - shift(log(GDP), type = "lag"), by = Country]

Calculando a variação anual nas emissões de CO2 para cada país e ano consecutivo

base_total[, dlnCO2 := log(CO2) - shift(log(CO2), type = "lag"), by = Country]

selecionar variáveis

### Remover linhas com valores ausentes nas principais variáveis
variaveis_essenciais <- c("GDP", "CO2", "Forest_perc", "Land_n_Marine", "Bird", "Fish", "Plant", "Mammal")
base_total <- base_total[complete.cases(base_total[, ..variaveis_essenciais]), ]

# Selecionando as variáveis desejadas para a análise
variaveis_selecionadas <- c("GDP", "dlnCO2","CO2", "GINI", "Idh", 
                            "Forest_perc", "Land_n_Marine", "Bird", "Fish", 
                            "Plant", "Mammal", "g_GDP")

# Filtrando a base para as variáveis selecionadas e garantindo que sejam numéricas
dados_estatisticas <- base_total %>%
  select(all_of(variaveis_selecionadas)) %>%
  mutate(across(everything(), as.numeric)) # Converter todas as colunas para numérico

# Substituir valores Inf por NA
dados_estatisticas <- dados_estatisticas %>%
  mutate(across(everything(), ~ replace(., is.infinite(.), NA)))

# Remover qualquer linha com valores NA
dados_estatisticas <- na.omit(dados_estatisticas)

Usando stargazer para gerar a tabela de estatísticas descritivas

library(stargazer)
stargazer(dados_estatisticas, type = "text", title = "Estatísticas Descritivas",
          digits = 2, summary.stat = c("mean", "median", "min", "max", "sd"))
## 
## Estatísticas Descritivas
## ==================================================================
## Statistic        Mean     Median    Min        Max       St. Dev. 
## ------------------------------------------------------------------
## GDP           13,186.67  5,668.43  270.14  108,351.40   18,094.14 
## dlnCO2           0.02      0.02    -0.71      0.71         0.09   
## CO2           179,148.90 13,046.30  7.50  10,762,824.00 861,015.70
## GINI            38.26      37.20   24.20      63.30        7.62   
## Idh              0.72      0.74     0.38      0.96         0.15   
## Forest_perc     33.07      31.62    0.00      97.77       24.18   
## Land_n_Marine   11.98      8.58     0.01      99.96       12.30   
## Bird            23.47       16       0         175        26.12   
## Fish            39.90       30       0         251        39.36   
## Plant           88.35       23       0        1,859       197.73  
## Mammal          17.69       10       0         191        22.75   
## g_GDP            0.02      0.02    -0.36      0.27         0.04   
## ------------------------------------------------------------------

matriz de correlação

# Calculando a matriz de correlação usando base_total
correlation_matrix <- cor(dados_estatisticas, use = "complete.obs")

# Visualizando a matriz de correlação com corrplot
library(corrplot)
corrplot(correlation_matrix, method = "color", addCoef.col = "black", 
         tl.cex = 0.8, number.cex = 0.7, title = "Matriz de Correlação", 
         mar = c(0, 0, 1, 0))

grafico gini

##### Loading required packages #####
library(ggplot2)
library(dplyr)

##### Filtrando os países específicos #####
# Filtrando os países Brasil, Estados Unidos, França e Chile
paises_selecionados <- c("BRA", "USA", "FRA", "CHL")
data_gini_filtrada <- data_gini_long %>%
  filter(Country %in% paises_selecionados)

##### Criando os gráficos de linha do índice de Gini ao longo dos anos #####
ggplot(data_gini_filtrada, aes(x = year, y = GINI, color = Country)) +
  geom_line() + 
  geom_point() +
  labs(title = "Índice de Gini ao Longo dos Anos",
       x = "Ano",
       y = "Índice de Gini",
       color = "País") +
  theme_minimal() +
  theme(legend.position = "top") +
  scale_color_manual(values = c("BRA" = "blue", "USA" = "red", "FRA" = "green", "CHL" = "purple"))

##Gráfico de dispersão

##### Preparando a BaseTotal para o gráfico de dispersão #####
# Calcular o logaritmo do PIB na BaseTotal, caso ainda não tenha sido feito
base_total[, log_GDP := log(GDP)]

library(plotly)

# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(base_total, aes(x = log_GDP, y = Idh)) +
  geom_point(aes(color = Country), alpha = 0.6) +
  labs(title = "Gráfico de Dispersão: log(PIB) vs IDH",
       x = "Logaritmo do PIB",
       y = "Índice de Desenvolvimento Humano (IDH)",
       color = "País") +
  theme_minimal() +
  theme(legend.position = "top")

# Convertendo o gráfico ggplot para plotly
ggplotly(fig)

##Gráfico IDH vs capital humano

# Carregar o pacote plotly
library(plotly)

# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(base_total, aes(x = hc, y = Idh)) +
  geom_point(aes(color = Country), alpha = 0.6) +  # Usando pontos com cor por país
  labs(title = "Gráfico de Dispersão: IDH vs Capital Humano",
       x = "Capital Humano (hc)",
       y = "Índice de Desenvolvimento Humano (IDH)",
       color = "País") +
  theme_minimal() +  # Estilo minimalista
  theme(legend.position = "top")  # Posicionamento da legenda

# Convertendo o gráfico ggplot para plotly
ggplotly(fig)

##Gráfico 3

# Converter 'hc' para numérico e tratar valores não numéricos como NA
base_total$hc <- as.numeric(base_total$hc)
## Warning: NAs introduced by coercion
summary(base_total$hc)  # Verificar se a conversão foi bem-sucedida
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.193   1.953   2.731   2.648   3.257   3.849     459
# Calcular a média do Gini e do capital humano por país
media_gini_hc <- base_total %>%
  group_by(Country) %>%
  summarise(
    media_gini = mean(GINI, na.rm = TRUE),
    media_hc = mean(hc, na.rm = TRUE)
  )

# Visualizar a tabela resultante para confirmar os valores
print(media_gini_hc)
## # A tibble: 188 × 3
##    Country media_gini media_hc
##    <chr>        <dbl>    <dbl>
##  1 AFG           37.7   NaN   
##  2 AGO           49.8     1.46
##  3 ALB           33.5     2.95
##  4 AND           35.2   NaN   
##  5 ARE           28.1   NaN   
##  6 ARG           41.8     3.02
##  7 ARM           32.4   NaN   
##  8 ATG           37.2   NaN   
##  9 AUS           34.4     3.52
## 10 AUT           30.6     3.35
## # ℹ 178 more rows
# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(media_gini_hc, aes(x = media_gini, y = media_hc)) +
  geom_point(aes(color = Country), alpha = 0.6) + 
  labs(title = "Gráfico de Dispersão: Média do Gini vs Capital Humano",
       x = "Média do Índice de Gini",
       y = "Média do Capital Humano (hc)",
       color = "País") +
  theme_minimal() +
  theme(legend.position = "top")

# Convertendo o gráfico ggplot para plotly
ggplotly(fig)

View(data_gini_long)